Skip to content

Conversation

@0224LJH
Copy link
Contributor

@0224LJH 0224LJH commented Dec 12, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/1047

🧭 풀이 시간

120분

👀 체감 난이도

✏️ 문제 설명

은진이의 집 앞에는 많은 나무가 심어져 있는 아름다운 정원이 있다.

최근에 새로운 법이 제정되었다. 이 법은 모든 정원은 울타리로 둘러쌓여야 한다는 법이다. 울타리는 반드시 변이 축에 평행한 직사각형 모양이어야 한다. 모든 나무는 울타리의 안에 있거나, 울타리의 경계에 접해 있어야 한다.

이러한 새로운 법을 듣게된 은진이는 마음이 아팠다. 안타깝게도, 은진이는 울타리를 만들 나무를 살 돈이 없다. 따라서, 은진이는 정원에 심어져있는 나무를 조금 잘라 울타리를 만드는 방법밖에 없다.

각 나무가 심어져 있는 (x, y)위치와, 나무를 베었을 때, 만들 수 있는 울타리의 길이가 주어진다.

은진이는 나무를 매우 사랑하기 때문에, 나무를 되도록이면 조금만 나무를 벌목하려고 한다. 은진이가 새로운 법을 지키기 위해 잘라야 하는 나무 개수의 최솟값을 구하는 프로그램을 작성하시오.

가로 세로의 길이 중 하나가 0이어도 직사각형이며, 모두 0이어도 직사각형이다.

첫째 줄에 N이 주어진다. N은 2보다 크거나 같고, 40보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 각 나무가 심어져 있는 위치와 그 나무로 만들 수 있는 울타리의 길이가 순서대로 주어진다. 모든 값은 1,000,000보다 작거나 같은 자연수이다. 모든 나무의 x좌표는 같지 않고, y좌표도 같지 않다.

🔍 풀이 방법

맨처음에는 하나의 나무를 기준으로 잡고, 가장 가까운 나무를 하나씩 추가하는 식으로 진행하였는데, 이러면 예외케이스가 있어서 한계가 있다.

그렇기에 대신 N이 최대 40이라는 점을 이용하여, 만들어질 수 있는 모든 울타리를 마다 그 울타리가 만들어질 수 있는 최소 벌목 수를 구하는 식으로 진행하였다.

⏳ 회고

@0224LJH 0224LJH added success 👍 해설을 보지 않고 풀었을 때 hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Dec 12, 2025
@ShinHeeEul ShinHeeEul merged commit 591ea43 into main Dec 12, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

hint 💡 반례를 참고했거나 힌트를 얻고 풀었을 때 success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants